/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.business.product.core.repository.entity;

import com.gitee.peigenlpy.actable.annotation.Column;
import com.gitee.peigenlpy.actable.annotation.Index;
import com.gitee.peigenlpy.actable.annotation.Table;
import com.gitee.peigenlpy.actable.annotation.Unique;
import com.gitee.peigenlpy.actable.constants.MySqlCharsetConstant;
import com.gitee.peigenlpy.actable.constants.MySqlEngineConstant;
import com.gitee.peigenlpy.actable.constants.MySqlTypeConstant;
import info.peigen.hotpot.business.product.facade.enums.ProductSkuType;
import info.peigen.hotpot.business.product.facade.enums.ProductStatus;
import info.peigen.hotpot.common.core.enums.SortType;
import info.peigen.hotpot.component.data.repository.beetlsql.entity.AbstractCreateTimeEntity;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;

/**
 * <b>(ProductStandardKeepingUnitEntity)</b>
 * SKU（Stock Keeping Unit，即库存量单位）
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2021/11/3
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
@Table(name = "product_sku", comment = "sku", charset = MySqlCharsetConstant.UTF8MB4, engine = MySqlEngineConstant.InnoDB)
@org.beetl.sql.annotation.entity.Table(name = "product_sku")
public class ProductStandardKeepingUnitEntity extends AbstractCreateTimeEntity {
    @Column(name = "spu_id", type = MySqlTypeConstant.VARCHAR, length = 30, isNull = false, comment = "spuId")
    @org.beetl.sql.annotation.entity.Column("spu_id")
    @Index(value = "spuId", columns = "spu_id")
    String         spuId;
    @Column(name = "sku_id", type = MySqlTypeConstant.VARCHAR, length = 30, isNull = false, comment = "skuId")
    @org.beetl.sql.annotation.entity.Column("sku_id")
    @Unique(value = "skuId", columns = "sku_id")
    String         skuId;
    @Column(name = "name", type = MySqlTypeConstant.VARCHAR, length = 100, isNull = false, comment = "商品名称")
    @org.beetl.sql.annotation.entity.Column("name")
    @Index(value = "name", columns = "name")
    String         name;
    @Column(name = "detail", type = MySqlTypeConstant.VARCHAR, length = 4000, comment = "商品介绍(富文本)")
    @org.beetl.sql.annotation.entity.Column("detail")
    String         detail;
    @Column(name = "brand_id", type = MySqlTypeConstant.VARCHAR, length = 100, comment = "品牌Id")
    @org.beetl.sql.annotation.entity.Column("brand_id")
    String         brandId;
    @Column(name = "type", type = MySqlTypeConstant.VARCHAR, length = 30, comment = "商品类型")
    @org.beetl.sql.annotation.entity.Column("type")
    @Index(value = "type", columns = "type")
    ProductSkuType type;
    @Column(name = "property_ids", type = MySqlTypeConstant.VARCHAR, length = 1000, comment = "商品属性Id集合")
    @org.beetl.sql.annotation.entity.Column("property_ids")
    String         propertyIds;
    @Column(name = "status", type = MySqlTypeConstant.VARCHAR, length = 30, isNull = false, comment = "上架状态")
    @org.beetl.sql.annotation.entity.Column("status")
    @Index(value = "status", columns = "status")
    ProductStatus  status;
    @Column(name = "sort", type = MySqlTypeConstant.VARCHAR, length = 10, isNull = false, comment = "排序")
    @org.beetl.sql.annotation.entity.Column("sort")
    SortType       sort;
    @Column(name = "operator_id", type = MySqlTypeConstant.VARCHAR, length = 30, comment = "操作员Id")
    @org.beetl.sql.annotation.entity.Column("operator_id")
    String         operatorId;
}